package com.learning.spring.optimize.source;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * ClassName: SourceCode
 * Description:
 * Date: 2018/8/7 13:48 【需求编号】
 *
 * @author Sam Sho
 * @version V1.0.0
 */
public class SourceCode {

    /**
     * Application 容器初始化分析
     */
    static void test() {

        ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");

        // this(new String[] {configLocation}, true, null);

        // 三个步骤
        // 1- super(parent);
        // 2- setConfigLocations(configLocations);
//        if (refresh) {
//            refresh();
//        }

        // refresh() 方法是核心，定义在 AbstractApplicationContext 中


    }

    /**
     * BeanDefinition 分析
     */
    static void test2() {

    }

    /**
     * InstantiationStrategy 负责根据 BeanDefinition 对象创建一个 Bean 实例
     */
    static void test3() {

    }

    /**
     * BeanWrapper：一个代理器，完成Bean 属性的填充工作
     */
    static void test4() {

    }


}
